[C] Apaga linha em um Arquivo
Publicado por Enzo de Brito Ferber 06/03/2006
[ Hits: 17.908 ]
Homepage: http://www.maximasonorizacao.com.br
Este script apaga a linha "dita" por um
usuário de um arquivo "dito" pelo mesmo.
Código de minha autoria bem comentado
e simples.... ajuda bastante a entender
manipulação de arquivos, aloção
dinamina de memoria, e maniputação de
strings....
/********************************************************************************************* Programa: apaga.c Autor: Enzo Ferber 'Slackware_10' Propósito: Apaga linha definida por usuário em um arquivo **********************************************************************************************/ #include <stdio.h> #include <stdlib.h> int abreArquivo(char arquivo[]){ FILE *arqEntrada; FILE *arqSaida; int line = 0; int linha = 1; int i; char textoArquivo[100]; char *output; output = (char *)malloc((strlen(arquivo)+strlen(".editado")) * sizeof(char)); strcat(output, arquivo); strcat(output, ".editado"); if((arqEntrada = fopen(arquivo, "r")) == 0){ //testa se o arquivo pode ser aberto printf("Impossivel abrir arquivo...\n"); //informa o erro exit(1); //finaliza execução } if((arqSaida = fopen(output, "w")) == 0){ //testa se o arquivo pode ser aberto printf("Impossivel abrir arquivo...\n"); //informa o erro exit(1); //finaliza execução } printf("Digite a linha a ser apagada no arquivo: "); //pede a linha scanf("%d", &line); //le a linha e armazena na variável 'line' rewind(arqEntrada); //certifica de que o cursor esta no primeiro caractere do arquivo for(i = 0; !feof(arqEntrada);i++){ //incrementa 'i' enquando não for fim de arquivo memset(textoArquivo, '{FONTE}', 100); //inicializa e/ou limpa string 'textoArquivo' fgets(textoArquivo, 101, arqEntrada); //pega uma string de 100 caracteres if(linha == line){ //se a linha for a escolhida fputc('\n', arqSaida); //troca a linha que o usuario quer por nova linha linha = linha + 1; //incrementa o contador de linhas continue; //volta ao inicio do loop sem executar o resto } linha = linha + 1; //incrementa o contador de linas fputs(textoArquivo, arqSaida); //coloca a string 'textoArquivo' no arquivo encoded.txt } printf("O arquivo output %c: %s\n",233, output); free(output); //desaloca espaço alocado para string contendo novo do novo arquivo fclose(arqEntrada); //fecha a stream 'arqEntrada' fclose(arqSaida); //fecha a stream 'arqSaida' } int main(void){ //rotina principal do programa char arquivo[100]; printf("Digite o caminho completo do arquivo: "); __fpurge(stdin); //limpa buffer de entrada scanf("%[^\n]", arquivo); abreArquivo(arquivo); }
Gerenciamento de alunos com dados armazenados em arquivo
Agenda (fones, compromissos, aniversários) em C usando arquivos binários
Fwn - Formatador de arquivos .txt
Cadastro de arquivo usando ncurses como menu
MakeInt - gerador de wordlist numérica
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
firefox nao guarda meus logins nos sites (1)
Instalar debian testing (13) "por cima" do debian 12 (2)
Erro de segmentação «Segmentation fault (core dumped)» ao retornar obj... (1)